// 思想： 函数名就是变量名
// 函数的名字

function fun() {
    console.log("这里是fun");
}

// console.log(fun());

fun = "16586";
console.log(fun);
console.log(typeof fun);

console.log("========");

var gn = 17;
gn = function () {
    console.log('1234124');
}
gn();


_123 = function () {
    console.log(123);
}
_123();


let alen = function () {
    console.log("alen");
}

function dn(abcd) {
    abcd();
}

// 函数名可以做为变量名进行传递

alen();
dn(alen);

function mn() {
    return function () {
        //函数可以作为返回值返回
        console.log("alice");
    }
}

console.log("========");
mn();
mn()();

var $ = function () {
    console.log("ffffff");
}
$();

var _ = function () {
    console.log("******")
}
_();

// 注意：记住  函数名+() = 运行

// 自运行函数

(function () {
    console.log("这里是自运行函数！");
}())

function ln() {
    console.log("this is ln");
};    //function ln(){...}() 不行
ln();

(function () {
    console.log("this is self run function!");
})();

!function () {
    console.log("!")
}();
~function () {
    console.log("~")
}();
-function () {
    console.log("-")
}();

(function (a, b) {
    console.log(a + b);
})(1, 2);